package com.example.backend.gateway.controller;

import com.example.backend.gateway.service.BackendGatewayService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@Slf4j
@CacheConfig(cacheNames = "CacheHealthCheck")
@RefreshScope
@RestController
public class HealthCheckController {

    @Value("${health.status:ok}")
    private String health;

    @GetMapping("/healthCheck")
    public String healthCheck() {
        log.info("health={}", health);
        return health;
    }

    @Autowired
    private BackendGatewayService backendGatewayService;

    @Cacheable(key = "#value", condition = "#result!=null")
    @GetMapping("/cache/{value}")
    public String getByCache(@PathVariable("value") String value) {
        log.info("value:{}", value);
        return backendGatewayService.getValue(value);
    }
}
